package view;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import model.*;
import controller.*;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;


public class ConductorAction extends ActionSupport implements ModelDriven<KlsConductor> {

	private static final long serialVersionUID = 1L;
	private KlsConductor conductor = new KlsConductor();
	private KlsConductorManager conductorManager;
	private int idConductor;
	private List<KlsConductor> conductorList;
	private int idEstadoConductor;
	private int idUsuarioCreador;
	private int idUsuarioModificador;
	private KlsEstadoConductorManager estadoConductorManager;
	
	public ConductorAction() {
    	conductorManager = new KlsConductorManager();
    	estadoConductorManager = new KlsEstadoConductorManager();
    }
	
	public KlsConductor getModel() {
		return conductor;
	}
	
	
	public String execute() {
    	System.out.println("execute called");
        return SUCCESS;
    }
	
	public String list() {
	     try {
	    	this.conductorList = conductorManager.list();
	     }    
	     catch (Exception e) {
	        e.printStackTrace();
	        return ERROR;
	    }
	    return SUCCESS;
	}
	
	
	public String add() throws Exception{
        
		//leo varibles de sesion  
						
		setIdUsuarioCreador(Integer.valueOf( ActionContext.getContext().getSession().get("loggedInIdUser").toString() ));
		setIdUsuarioModificador(Integer.valueOf( ActionContext.getContext().getSession().get("loggedInIdUser").toString() ));
		setIdEstadoConductor(1);
		
		System.out.println(getModel());
		
		conductor = conductorManager.add( getModel(), idEstadoConductor, idUsuarioCreador, idUsuarioModificador );
		return SUCCESS;		
}
	
	
	public String load() {
    	try {
    		HttpServletRequest request = ServletActionContext.getRequest();
    		String s = request.getParameter("idConductor");
    		setIdConductor( Integer.parseInt(s));
    		conductor = conductorManager.load(this.getIdConductor());
    		
    	} catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
    	return SUCCESS;
    }
	
	public String update() {
		
		HttpServletRequest request = ServletActionContext.getRequest();
		setIdEstadoConductor( Integer.valueOf( request.getParameter("idEstadoConductor")));
		setIdUsuarioCreador( Integer.valueOf( request.getParameter("idUsuarioCreador")));
		setIdUsuarioModificador(Integer.valueOf( ActionContext.getContext().getSession().get("loggedInIdUser").toString() ));
				
    	try {
    		conductor = conductorManager.update(conductor, idEstadoConductor, idUsuarioCreador, idUsuarioModificador );
        } catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
        return SUCCESS;
    }
	
	public String delete() {
    	try {
    		
    		HttpServletRequest request = ServletActionContext.getRequest();
    		String s = request.getParameter("idConductor");
    		setIdConductor( Integer.parseInt(s));
    		conductor = conductorManager.delete(this.getIdConductor());   		
    		
    	} catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }

        return SUCCESS;
    }
	
	public KlsConductor conductor() {
		return conductor;
	}
	
	public void setConductor(KlsConductor conductor) {
		this.conductor = conductor;
	}

	public List<KlsConductor> getConductorList() {
		return conductorList;
	}

	public void setConductorList(List<KlsConductor> conductorList) {
		this.conductorList = conductorList;
	}

	/**
	 * @return the idConductor
	 */
	public int getIdConductor() {
		return idConductor;
	}

	/**
	 * @param idConductor the idConductor to set
	 */
	public void setIdConductor(int idConductor) {
		this.idConductor = idConductor;
	}

	public KlsConductorManager getConductorManager() {
		return conductorManager;
	}

	public void setConductorManager(KlsConductorManager conductorManager) {
		this.conductorManager = conductorManager;
	}

	public int getIdEstadoConductor() {
		return idEstadoConductor;
	}

	public void setIdEstadoConductor(int idEstadoConductor) {
		this.idEstadoConductor = idEstadoConductor;
	}

	public int getIdUsuarioCreador() {
		return idUsuarioCreador;
	}

	public void setIdUsuarioCreador(int idUsuarioCreador) {
		this.idUsuarioCreador = idUsuarioCreador;
	}

	public int getIdUsuarioModificador() {
		return idUsuarioModificador;
	}

	public void setIdUsuarioModificador(int idUsuarioModificador) {
		this.idUsuarioModificador = idUsuarioModificador;
	}

	public KlsConductor getConductor() {
		return conductor;
	}

	/**
	 * @return the estadoConductorManager
	 */
	public KlsEstadoConductorManager getEstadoConductorManager() {
		return estadoConductorManager;
	}

	/**
	 * @param estadoConductorManager the estadoConductorManager to set
	 */
	public void setEstadoConductorManager(KlsEstadoConductorManager estadoConductorManager) {
		this.estadoConductorManager = estadoConductorManager;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	
}
